package com.pm.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pm.entity.DailyReport;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;


import java.util.List;

/**
 * 日报Mapper接口
 */
@Mapper
public interface DailyReportMapper extends BaseMapper<DailyReport> {
    
    /**
     * 获取所有日报
     * @return 日报列表
     */
    @Select("SELECT * FROM daily_reports ORDER BY created_time DESC")
    List<DailyReport> findAll();
    
    /**
     * 根据用户ID查找日报
     * @param userId 用户ID
     * @return 日报列表
     */
    @Select("SELECT * FROM daily_reports WHERE user_id = #{userId} ORDER BY report_date DESC")
    List<DailyReport> findByUserId(String userId);
    
    /**
     * 根据项目ID查找日报
     * @param projectId 项目ID
     * @return 日报列表
     */
    @Select("SELECT * FROM daily_reports WHERE project_id = #{projectId} ORDER BY report_date DESC")
    List<DailyReport> findByProjectId(String projectId);
    
    /**
     * 根据用户ID和日期查找日报
     * @param userId 用户ID
     * @param reportDate 报告日期
     * @return 日报信息
     */
    @Select("SELECT * FROM daily_reports WHERE user_id = #{userId} AND report_date = #{reportDate}")
    DailyReport findByUserIdAndDate(String userId, String reportDate);
    
    /**
     * 根据日期范围查找日报
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 日报列表
     */
    @Select("SELECT * FROM daily_reports WHERE report_date BETWEEN #{startDate} AND #{endDate} ORDER BY report_date DESC")
    List<DailyReport> findByDateRange(String startDate, String endDate);
    
    /**
     * 根据用户ID和日期范围查找日报
     * @param userId 用户ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 日报列表
     */
    @Select("SELECT * FROM daily_reports WHERE user_id = #{userId} AND report_date BETWEEN #{startDate} AND #{endDate} ORDER BY report_date DESC")
    List<DailyReport> findByUserIdAndDateRange(String userId, String startDate, String endDate);
}